const baseURL = 'https://obuge.com/juzao'

let interceptors = { //拦截器
    request(req){ ///请求拦截器
     return new Promise(next =>{
       req.url =  /^http/.test(req.url) ? req.url :(baseURL + req.url),
       req.header = req.header || {}
       ///设置token
       if(wx.token) req.header.token = wx.token
       next(req)
     })
    },
    response(res){ //响应拦截器
      return new Promise(next => {
          let data = res.data
          if(res.statusCode == 404){
              data = {errorMsg:'请求接口不存在'}
          }else if(res.statusCode == 500){
              data = {errorMsg:res.data || '服务器错误，请联系网站管理员'}
          }else if(res.statusCode == 200){ //正常业务
              // next(res.data)
          }else{
              data = {errorMsg:res.errMsg || '未知错误'}
          }
          if(data.errorMsg){
            wx.showToast({
              title: data.errorMsg,
              duration:2000
            })
          }
      })
  
    }
  
}
function GET(url,query,args){
  args = args || {}
  return new Promise((resolve, reject) => {
    interceptors.request({url,...args}).then(req =>{
      wx.request({
        ...req,
        data:query,
        method:'GET',
        success: (res) => {
          interceptors.response(res).then(data => {
            resolve(data)
          })
        },
        fail:(res) => {
          interceptors.response(res).then(data => {
            resolve(data)
          })
        }
      })
    })
    })
  }

function PUT(url,data,args){
  args = args || {}
  return new Promise((resolve,reject) =>{
    interceptors.request({url,...args}).then(req =>{
    wx.request({
     ...req,
     data,
     method:'PUT',
     success: (res) =>{
       interceptors.response(res).then(data =>{
         resolve(data)
       })
     },
     fail:(res) => {
      interceptors.response(res).then(data => {
        resolve(data)
      })
    }
  })
})
})
}
function POST(url,data,args){
  args = args || {}
  return new Promise((resolve,reject) =>{
    interceptors.request({url,...args}).then(req =>{
      wx.request({
        ...req,
        data,
        method:'POST',
        success: (res) =>{
          interceptors.response(res).then(data =>{ 
            resolve(data)
          })       
        },
        fail:(res) => {
          interceptors.response(res).then(data =>{
            resolve(data)
          })
        }
      })
    })
  })
}
function DELETE(url,query){
  return new Promise((resolve,reject) =>{
    interceptors.request({url}).then(req =>{
      wx.request({
        ...req,
        data,
        method:'DELETE',
        success: (res) =>{
          interceptors.response(res).then(data =>{ 
            resolve(data)
          })       
        },
        fail:(res) => {
          interceptors.response(res).then(data =>{
            resolve(data)
          })
        }
      })
    })
  })
}
module.exports = {
    baseURL,
    get:GET,
    put:PUT,
    post:POST,
    delete:DELETE
}